<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Document</title>
    <!-- 导入页面的基本样式 -->
    <link rel="stylesheet" href="./css/search.css" />
    
  </head>
  <body>
    <div class="container">
      <!-- Logo -->
      <img src="./images/taobao_logo.png" alt="" class="logo" />

      <div class="box">
        <!-- tab 栏 -->
        <div class="tabs">
          <div class="tab-active">宝贝</div>
          <div>店铺</div>
        </div>
        <!-- 搜索区域（搜索框和搜索按钮） -->
        <div class="search-box">
          <input type="text" class="ipt" placeholder="请输入要搜索的内容" />
          <button class="btnSearch">
            搜索
          </button>
        </div>
        <!-- 搜索建议列表 -->
        <div id="suggest-list"></div>
      </div>
    </div>
    <!-- 导入 jQuery -->
    <script src="./lib/jquery.js"></script>
    <script src="./lib/template-web.js"></script>
    <!-- 定义列表的模板 -->
    <script type="text/html" id="list-tpl">
      {{each result}}
        <div class="suggest-item">{{$value[0]}}</div>
      {{/each}}
    </script>
    <script>
    $(function () {
      // 该对象缓存曾经搜索的结果
      var cacheObj = {}
      // 监听输入框输入的事件
      $('.ipt').on('keyup', function () {
        var kw = $(this).val().trim()
        if (kw.length <= 0) {
          // 隐藏列表
          $('#suggest-list').html('').hide()
          return 
        }
        // 输入关键词的时候，先判断缓存是否存在，如果存在，就取出进行渲染，不再发送请求
        // 如果缓存不存在该关键词，那么再重新发送请求
        if (cacheObj[kw]) {
          // 缓存存在，直接渲染
          // 把数据填充到模板
          var listTag = template('list-tpl', cacheObj[kw])
          // 把生成的静态模板填充到页面
          $('#suggest-list').html(listTag).show()
          // 终止后续代码，不再发送请求
          return 
        }
  

        // 根据关键词发送请求
        $.ajax({
          // 请求地址
          url: 'https://suggest.taobao.com/sug?q=' + encodeURI(kw),
          // 返回数据格式
          dataType: 'jsonp',
          // 回调函数
          success: function (data) {
            // 如果后台返回的数据为空，清空列表并隐藏
            if (data.result.length === 0) {
              $('#suggest-list').empty().hide()
            }
            // 把数据填充到模板
            var listTag = template('list-tpl', data)
            // 把生成的静态模板填充到页面
            $('#suggest-list').html(listTag).show()
            // 把该结果进行缓存
            cacheObj[kw] = data
          }
        })
      })
    })
    </script>
  </body>
</html>
